home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1994 March / Internet Info CD-ROM (Walnut Creek) (March 1994).iso / networking / terms / kermit / b / ikxker.mss < prev    next >
Encoding:
Text File  |  1992-09-29  |  37.4 KB  |  887 lines

  1. @Part(CICSKERMIT,root="kuser")
  2. @string(-cicsversion="4.2.2")
  3. @string(-cicsdate="91/7/18")
  4. @Chapter<IBM CICS KERMIT>
  5. @Index(CICS)
  6. @Begin<Description,Leftmargin +15,Indent -15,spread 0>
  7. @i(Program:)@\John Chandler (Harvard/Smithsonian Center for
  8. Astrophysics); contributions from
  9. Va@ccd()e Kundak@ccd()i and
  10. Daphne Tzoar (Columbia U),
  11. Brian Lesser (U. New Brunswick), Carrie Ledford (Miami U.), Jeff
  12. Huestis (Washington U.),
  13. Wayne Mery (Lehigh U.), ICSTI, Pierre Goyette (McGill U.),
  14. Clark Frazier (Harvard
  15. Bus. Sch.), Bob Bolch (Triangle), Andr@eac() Pirard (U. Li@egr()ge)
  16.  
  17. @i(Language:)@\IBM/370 Assembler
  18.  
  19. @i(Documentation:)@\John Chandler (CfA)
  20.  
  21. @i(Version:)@\@value(-cicsversion) (@value<-cicsdate>)
  22.  
  23. @i(Date: )@\1991 July
  24. @end<Description>
  25.  
  26. @subheading<Kermit-CICS Capabilities At A Glance:>
  27. @begin<format,leftmargin +2,above 1,below 1>
  28. @tabclear()@tabset(3.2inches,3.7inches)
  29. Local operation:@\Yes
  30. Remote operation:@\Yes
  31. Transfers text files:@\Yes
  32. Transfers binary files:@\Yes
  33. Wildcard send:@\Yes
  34. @q(^X/^Z) interruption:@\Yes (through micro)
  35. Filename collision avoidance:@\Yes
  36. Can time out:@\No
  37. 8th-bit prefixing:@\Yes
  38. Repeat count prefixing:@\Yes
  39. Alternate block checks:@\Yes
  40. Terminal emulation:@\No
  41. Communication settings:@\No
  42. Transmit BREAK:@\No
  43. Packet logging:@\Yes
  44. Transaction logging:@\Yes
  45. Session logging:@\No
  46. Raw transmit:@\Yes (no prompts)
  47. Sliding window:@\No
  48. Long packets:@\Yes
  49. Act as server:@\Yes
  50. Talk to server:@\Yes
  51. Advanced server functions:@\Yes
  52. Advanced commands for servers:@\Yes
  53. Local file management:@\Yes
  54. Handle Attribute Packets:@\Yes
  55. Command/init files:@\Yes
  56. Command macros:@\No
  57. @end<format>
  58.  
  59. @subheading<CICS Specifics of Kermit-370:>
  60. @begin<format,leftmargin +2,above 1,below 1>
  61. @tabclear()@tabset(3.2inches,3.7inches)
  62. @Index(Initialization files)@Index(Log files)@Index(LRECL)
  63. Global INIT file:@\@q(KSYS.TD)
  64. User INIT file:@\@q(KINIT.TAKE)
  65. Debug packet log:@\@q(KLOG)@i(term)@q(.TS)
  66. Server reply log:@\@q(KREP)@i(term)@q(.TS)
  67. Mail command:@\@q[KERMAIL R(_...) @i<filespec> LIST(@i<users>)]
  68. Print command:@\@q[KERMPRT R(_...) @i<filespec> OPTIONS(@i<options>)]
  69. Submit command:@\@q[KERMSUB R(_...) @i<filespec> OPTIONS(@i<options>)]
  70. Maximum packet size:@\1913 (SERIES1), 1024 (TTY)
  71. Maximum disk LRECL:@\32767
  72. @end<format>
  73.  
  74. @Index(IBM)
  75. @Index(TTY)@Index(Series/1)@Index(CICS)
  76. Kermit-CICS is a member of the generic Kermit-370 family and shares most
  77. of the features and capabilities of the group.
  78. As its name implies, Kermit-CICS is the
  79. variant of Kermit-370 that runs under CICS.  As much as possible, it is
  80. designed to be independent of the operating system that runs CICS, but
  81. only on IBM-370-compatible machines.
  82. The primary documentation for Kermit-CICS is actually
  83. the chapter on Kermit-370 (entitled IBM 370 Kermit), which
  84. describes general properties; the present chapter assumes the
  85. reader is familiar with that material.  Only the details specific to
  86. CICS operation will be discussed here, @i<e.g.>, command syntax
  87. relating to CICS data objects or commands not offered in general
  88. by Kermit-370.
  89.  
  90. @Section<CICS Data Objects>
  91.  
  92. Unlike other environments for Kermit-370,
  93. CICS is not really an operating system and does not have anything
  94. that can be called a file system.  Nonetheless, CICS supports a
  95. variety of data
  96. objects that can be called "files".  Moreover, Kermit-CICS
  97. itself maintains a Kermit-only collection of storage organized into
  98. user directories.  Furthermore, Kermit simulates a set of CICS
  99. file-maintenance commands: DIRECTORY, TYPE, COPY, and DELETE.  Thus,
  100. for the purposes of Kermit,
  101. we may speak of a "CICS file system".
  102. The features of the file system of greatest interest to Kermit
  103. users are the supported types of data object,
  104. the format of file specifications (or @i<filespecs>),
  105. and the concept of
  106. records.  The latter is described in the Kermit-370 chapter.
  107.  
  108. @seealso(primary="Queues",other="TD, TS")
  109. As of this writing, Kermit-CICS supports three different types of data
  110. object: temporary storage (TS) queues, transient data (TD) queues,
  111. and Kermit-managed directory members.  The first two are standard CICS
  112. objects while the third is a special kind of object designed for small,
  113. personalized, infrequently used, quasi-permanent
  114. files, such as on-line help files and
  115. individual Kermit initialization files.
  116. @Index(Initialization files)
  117. In principle, Kermit also supports three other types, but the support
  118. is provided through an interface to external programs, none of which
  119. have yet been written.  These other types are non-TD pipes, spool files,
  120. and native OS data sets.
  121.  
  122. The CICS @i<filespec> takes one of two forms:
  123. @Begin(example,below 0.5)
  124. [fileclass/]filename[.filetype]
  125. @End(example)
  126. or
  127. @Begin(example,above 0.5)
  128. 'qualified.file.name
  129. @End(example)
  130. @Index(Qualified File Names)@Index(Fileclass)
  131. The first form represents a "normal" CICS data object while
  132. the second is the means of specifying a data object in the native
  133. operating system that supports CICS.
  134. In the first form, the optional fileclass is a string of up to four
  135. characters.  The filename is the primary identifier
  136. for the file, but the formats of both the fileclass and the
  137. filename depend on the filetype.  The latter must
  138. be one of a small set of supported types: PGM, SPOOL, TAKE, TD, TS,
  139. TSAUX or TSMAIN.  The last two are alternates for TS and are intended
  140. for specifying the type of storage desired for a new TS queue.  The
  141. default is Auxiliary storage.  Any
  142. of the three types will serve equally well@Index(TS queues) to
  143. identify a queue that already exists.  With filetypes @qq<TD> and
  144. @qq<TQ>, the fileclass is meaningless but may be
  145. specified anyway.
  146.  
  147. Kermit-CICS supplies a default filetype of @qq<TS> for any
  148. received file if no filetype is
  149. provided by the remote system.  If no filename is supplied either,
  150. Kermit invents one by concatenating the letter @qq<K>, a three-digit
  151. number, and the user's four-character CICS terminal id.  In any case,
  152. Kermit forces the filename
  153. @Index(TD queues)
  154. to conform to CICS rules by truncating it, if necessary, to eight
  155. characters (four for a TD queue).  Also, Kermit converts any lower-case
  156. letters to upper case.
  157.  
  158. Filetype @qq<TD> refers to any kind of transient data queue.  TD queues
  159. are much like files in a true file system, except for two important
  160. features: TD queues are permanent data objects (despite the transience
  161. of the data), and there is no straightforward means of determining how
  162. much storage a given TD queue occupies.  These two features combine to
  163. defeat the provisions made by Kermit for handling filename collision
  164. @Index(Filename collision)
  165. (see SET FILE COLLISION in the Kermit-370
  166. chapter).  Intra-partition queues, at least, have an associated number
  167. of queued records, but output extra-partition queues do not and
  168. therefore must always be presumed to contain data, @i(i.e.), to exist in
  169. a real sense.  Of course, all TD queues exist insofar as they are
  170. pre-defined in the CICS DCT, but the intent of the default filename
  171. collision handling is to protect data from erasure.  Thus, Kermit-CICS
  172. will not normally write an uploaded file into an output extra-partition
  173. TD queue at all.  Because of the filename collision, the file would be
  174. written to a TS queue, according to the algorithm described under SET
  175. FILE COLLISION in this chapter.  The only way of uploading to a TD queue
  176. is to change the COLLISION setting to APPEND or OVERWRITE.  Another
  177. effect of the non-dynamic quality of TD queues is that Kermit, when
  178. presented with an undefined TD queue name for an uploaded file, cannot
  179. create the missing queue.  Thus, it must behave as if there were a
  180. filename collision and find an alternate place to store the file.
  181. However, if COLLISION were not set to RENAME, Kermit would not even
  182. check for collisions, but would simply attempt to write to the undefined
  183. queue and stop the file transfer because of the resulting I/O error.
  184.  
  185. @Index(Pipes)
  186. Filetype @qq<PGM> specifies a pipe
  187. managed by a CICS program whose name is
  188. the filename.  Such a program would be invoked to open the pipe, then
  189. successively to read or write, and finally to close the pipe.  A single
  190. program can be written to manage both input and output, even
  191. perhaps both at
  192. the same time.  The optional fileclass in the @i(filespec) may be used
  193. by the program for any desired purpose.  See the installation guide for
  194. details about writing such a program.
  195.  
  196. @Index(Spool files)
  197. Filetype @qq<SPOOL> represents a special type
  198. of pipe.  The filename gives
  199. the name of the desired spool file, and the program to be invoked is
  200. IKXDYNAL.  The optional fileclass is the spool class.
  201. @Index(Fileclass)
  202.  
  203. @Index(Directories)@Index(Userids)@Index(TAKE files)@Index(TAKE)
  204. Filetype @qq<TAKE> denotes a Kermit-managed directory
  205. member.  Note that this
  206. filetype is not reserved for TAKE files, even though directory
  207. storage is the
  208. logical place to keep most TAKE files.  Throughout this chapter, as in
  209. the other chapters on Kermit-370, the term "TAKE file" will
  210. always mean a file containing Kermit subcommands suitable for execution
  211. via the TAKE subcommand, regardless of the filetype.  Data objects
  212. with filetype @qq<TAKE> will be called "directory members", regardless of
  213. the purpose of those objects.  The fileclass, if any,
  214. specifies the directory name (either @qq<0000> to select the common
  215. directory or a userid to select a personal directory).  The default
  216. directory name is @qq<*>, which represents the userid of the
  217. current session.  Userids
  218. in Kermit-CICS are determined according to an algorithm
  219. chosen as part of the installation process (@i<e.g.>, the CICS operator
  220. id).  The filename of a member
  221. specifies that member within the given directory.  Obviously, distinct
  222. members having the same filename may exist simultaneously in different
  223. directories.  In short, this Kermit-managed storage comes close to being
  224. a real file system, aside from the limitation to the single filetype
  225. @qq<TAKE>.  For this reason, the Kermit concept of the "working
  226. directory" is implemented in Kermit-CICS primarily
  227. as the current directory associated with filetype
  228. @qq<TAKE>.  However, there is an alternate
  229. use of the "working directory" concept, namely, to specify a default
  230. @Index(Qualified File Names)
  231. prefix for Qualified File Names (QFN's).  Selecting
  232. a "directory" name that
  233. begins with an apostrophe establishes that string as a QFN prefix for
  234. subsequent @i(filespecs) given to Kermit-CICS.  See the description of
  235. the CWD subcommand in this chapter for more details about "working
  236. directories".
  237.  
  238. @Index(Quotas)
  239. Despite the apparent convenience and privacy of Kermit directory
  240. members, these objects are not intended for routine file transfers,
  241. but only for small, quasi-permanent files.  The implementation makes use
  242. of a VSAM KSDS for storing the members and is geared entirely toward
  243. simplicity, rather than efficiency.  Thus, each record of a directory
  244. member is a separate record in the KSDS identified by a human-readable
  245. 17-byte key consisting of the directory name, the member name, and the
  246. record number.  Reading or writing a large member could tie up
  247. significant amounts of system resources.  To ensure that users respect
  248. the restriction on directory members, Kermit imposes a two-tiered quota
  249. on each directory.  If the first limit is exceeded, no further members
  250. may be created in the offending directory until
  251. enough space has been freed by deleting members.  If the second limit
  252. is exceeded, Kermit will stop writing to the new member immediately
  253. and will give a "disk full" error indication.  These limits apply
  254. equally to all directories.  The limits in the standard version of
  255. Kermit-CICS are 100,000 and 150,000 bytes, respectively, but each
  256. installation is free to establish its own limits.
  257.  
  258. To provide compatibility with other operating systems, when Kermit-CICS
  259. sends a file, it ordinarily makes a file header with
  260. only the filename and filetype.  However, extra information
  261. may be added by way of the SET FOREIGN subcommand.  In the case of a
  262. QFN, the last two tokens of the name are used for sending.
  263.  
  264. @Index(Wildcards)
  265. CICS allows a group of files to be specified in a single
  266. @i(filespec) by including the special
  267. "wildcard" characters @qq<*>
  268. and @qq<%>.  A @qq<*> matches any string of characters (even a null
  269. string) within the filename;
  270. a @qq<%> matches any single character.  Here are some examples:
  271.  
  272. @Begin(Description,spread 0.5,leftmargin +18, indent -16)
  273. @q<*.TS>@\All TS queues currently in CICS.
  274.  
  275. @q<F*.TD>@\All TD queues whose names start with F.
  276.  
  277. @q<0000/%%.TAKE>@\All system directory members with two-character names.
  278. @End(Description)
  279.  
  280. CICS files, like those in other IBM 370 systems, are record-oriented
  281. (see the introduction to the Kermit-370 chapter).
  282. In particular, CICS files are characterized by record
  283. format (RECFM), which may be fixed-length or varying-length,
  284. and by record
  285. length (LRECL).  Extra-partition TD queues are the only
  286. currently supported type of file that may have fixed-length
  287. records.  An important point to note is that records
  288. being written to a RECFM V data object are generally
  289. not limited in length by the current LRECL,
  290. but only by the CICS Kermit maximum (32767 bytes).  This is true of
  291. directory members and TS and
  292. intra-partition TD queues, but other limits may apply
  293. to other data objects.
  294.  
  295. Another file system feature of occasional interest is the means of
  296. reporting errors.  When Kermit-CICS encounters a file I/O
  297. error, it records
  298. @Index(Error codes)
  299. the function name and the error code from EIBRCODE
  300. for inclusion in the STATUS report.  The
  301. explanations of EIBRCODE can be found in Appendix A of the
  302. CICS command-level reference manual.  In some cases, however,
  303. Kermit will report
  304. an error code for an operation not directly performed by CICS.  These
  305. extra codes have not been defined, since they would result from
  306. operations on as-yet-unsupported filetypes.
  307.  
  308. @Section<Program Operation>
  309.  
  310. @Index(Initialization files)
  311. Kermit-CICS is a conversational transaction.  Thus, when it starts up,
  312. it allocates and initializes buffers and storage arrays.  In addition,
  313. to provide for site- and user-specific environments, it
  314. looks for two initialization
  315. files, @q(KSYS.TD) and @q(KINIT.TAKE).
  316. The file @q(KSYS.TD) is a read-only, extra-partition TD queue
  317. maintained by a systems programmer.  The file @q(KINIT.TAKE)
  318. resides in the user's Kermit directory and
  319. must be maintained by the user.  For example, the file could be changed
  320. by downloading it to a microcomputer, editing it there, and uploading
  321. it again (making sure to set FILE COLLISION to OVERWRITE).
  322. Alternatively, if tools exist for editing TS queues within CICS, the
  323. file could be copied to a TS queue, edited, and copied back.
  324.  
  325. Kermit-CICS cannot
  326. time out while waiting for a packet.  The only way to
  327. time out is from the other side:
  328. typing a carriage return to the local Kermit causing it to retransmit
  329. its last packet, or an automatic timeout as provided by many
  330. Kermits.
  331.  
  332. @Index(TTY)@Index(Handshake)
  333. CICS is different from some other IBM mainframe systems in that it allows
  334. a program to
  335. take control of prompting and synchronization on @qq<TTY> lines.
  336. Kermit-CICS takes advantage of this option, and
  337. it is not necessary to enable handshaking
  338. on the micro Kermit before
  339. connecting to CICS.  Thus,
  340. the micro Kermit should have
  341. HANDSHAKE set OFF, and Kermit-CICS should have HANDSHAKE set to 0.
  342. Since the generic Kermit-370 default handshake (XON) is retained in
  343. Kermit-CICS, the subcommand @qq<SET HANDSHAKE 0> is a good candidate
  344. for inclusion in @q(KSYS.TD).
  345. @Index(Initialization files)
  346.  
  347. @subheading(Interactive Operation:)
  348.  
  349. To run Kermit-CICS interactively, invoke the program from CICS by
  350. typing @q<KERMIT>.  When you see the prompt,
  351. @example(Kermit-CICS>)
  352. you may type a Kermit subcommand.  When the subcommand completes, Kermit
  353. issues another prompt.  The cycle repeats
  354. until you exit from the program.  For example:
  355. @Begin(Example)
  356. .@ux(KERMIT)
  357.  
  358. Kermit-CICS Version @value(-cicsversion) (@value<-cicsdate>)
  359. Enter ? for a list of valid commands
  360.  
  361. Kermit-CICS>@ux(send foo*.ts)
  362.  
  363.   @i(TS queues with names beginning FOO are sent)
  364.  
  365. Kermit-CICS>@ux(receive test.td)
  366.  
  367.   @i(File is received and stored in the TD queue called TEST)
  368.  
  369. Kermit-CICS>@ux(exit)
  370. @end(example)
  371.  
  372. In this example, which assumes a linemode session
  373. with a system prompt of @qq<.>, the text entered by the user is
  374. displayed along with messages and prompts.  The annotations are
  375. indented, but the distinction between user text and Kermit text
  376. may depend upon how this document is printed.  Normally,
  377. the text entered by the user is underscored, and the
  378. messages and prompts are not.
  379.  
  380. The prompt string from
  381. Kermit-CICS is truly interactive.  In other words, the prompt
  382. appears only when fresh
  383. input is needed from the terminal.  If, for example, multiple Kermit
  384. subcommands have been stacked up using the delimiter feature,
  385. the stack is read and
  386. executed before the next prompt appears.
  387.  
  388. @subheading(Command Line Invocation:)
  389.  
  390. Kermit-CICS may be invoked with command-line arguments from CICS.
  391. The arguments (taken to be the string beginning after the first blank
  392. after the four-letter transaction id @qq<KERM>)
  393. are interpreted as one or more subcommands to be executed
  394. by Kermit after completion of the initialization.  Thus, the command
  395. may be abbreviated as @qq<KERM> or @qq<KERMI> at the user's discretion.
  396. For instance:
  397. @Begin(Example)
  398. .@ux(KERMIT send test.take)
  399. @End(Example)
  400.  
  401. Kermit will exit and return to CICS after completing the specified
  402. subcommand.  A command line may contain up to
  403. 256 characters.  Note that the subcommand delimiter is initially
  404. disabled in Kermit-CICS, but it can be enabled in either of the
  405. initialization files and can then be used for entering
  406. multiple subcommands on the command line.
  407.  
  408. @subheading(Non-interactive Operation:)
  409.  
  410. @Index(Automatic operation)
  411. Kermit-CICS is both a CICS transaction named KERM
  412. and a CICS program named KERMIT.  As with any
  413. transaction, it may be started automatically as well as by hand, but it
  414. will then read the terminal expecting to find the command-line arguments
  415. (if any) for execution as a Kermit subcommand.  In addition, Kermit may
  416. be invoked via the CICS LINK and XCTL commands and (optionally)
  417. supplied with a COMMAREA.
  418.  
  419. If there is no COMMAREA, Kermit reads the terminal just as if
  420. it were invoked as a transaction.  If supplied, the COMMAREA is scanned,
  421. instead of a terminal buffer, for the command string.  Note that, if the
  422. COMMAREA does not begin with a blank, the first blank-delimited word
  423. will be ignored in the same way as the transaction name in a terminal
  424. buffer.  In both cases, the command-line arguments begin with the first
  425. non-blank character after the first blank.  Once the command line is
  426. established, execution proceeds the same as if Kermit had been started
  427. by hand; since Kermit exits as soon as it finishes the subcommand
  428. specified in the command string, there is no need to enter any
  429. subcommands at the terminal in this mode of operation.  Even so, Kermit
  430. should be given a terminal, since that provides the communication line
  431. for file transfer.
  432.  
  433. When Kermit exits, if the given COMMAREA is at least
  434. seven bytes long, Kermit sets a return or completion
  435. code in the COMMAREA according to
  436. the current status.  See the table of error codes in the Kermit-370
  437. chapter.  The return code takes the following form: the characters
  438. @qq<R(>, a four-byte signed binary integer, and the character @qq<)>.
  439. It is, thus, compatible with the convention described below under the
  440. CICS subcommand.
  441. @Index(Completion codes)
  442.  
  443. @subheading(Interface to mail, print, and batch)
  444.  
  445. @Index(Electronic mail)@Index(Printing files)@Index(Batch jobs)
  446. Unlike many other IBM/370 environments, CICS does not provide a standard
  447. means of returning a completion code from an invoked program.  As the
  448. previous paragraph indicates, Kermit-370 has adopted its own standard,
  449. using the COMMAREA, and this applies to the calling sequences for the
  450. commands that handle electronic mail, print files, and batch jobs.
  451. Thus, the @qq<R(_...)> shown in those sequences at the beginning of this
  452. chapter is not to be considered as an option, but as a required part of
  453. the COMMAREA to allow room for a return code.  Consequently, when
  454. Kermit-CICS calls one of those programs to verify the feasibility of
  455. that kind of file disposition, the COMMAREA consists of seven bytes,
  456. rather than none.  See below under the HOST subcommand for more details
  457. about invoking CICS programs from Kermit.
  458.  
  459. @subheading(Server mode:)
  460.  
  461. Command execution in server mode is different in three respects
  462. from normal operation.  First, some Kermit subcommands
  463. are not allowed (see the list of subcommands in the Kermit-370 chapter).
  464. Second, command errors
  465. always terminate any active TAKE file.
  466. Third, Kermit intercepts its terminal output
  467. and transmits the data to the local
  468. Kermit as text packets.  However, any other programs that wish to write
  469. to the terminal will do so, and
  470. such messages never appear to the local Kermit (except, perhaps,
  471. as bad packets).
  472.  
  473. @Section<Kermit-CICS Subcommands>
  474.  
  475. Kermit-CICS supports all the subcommands
  476. described in the
  477. Kermit-370 chapter.  In addition, there is the system-specific
  478. subcommand @qq<CICS>, which is a synonym for
  479. the generic subcommand @qq<HOST>.  @qq<CICS>
  480. can be issued as a remote Kermit command when Kermit-CICS
  481. is in server mode.
  482.  
  483. This section concentrates on
  484. the subcommands that have special form or meaning for Kermit-CICS.
  485. These are ordered alphabetically.
  486. See the chapter on Kermit-370 for further details.
  487.  
  488. @Heading(The CICS Subcommand)
  489. @Index(Host commands)
  490.  
  491. Syntax:@q< CICS  @i(text of command)>
  492.  
  493. @Index(File management)
  494. Kermit-CICS supports two kinds of "system" commands.  Both kinds are
  495. designated by the prefix @qq<CICS> or @qq<HOST>, even though neither
  496. kind can be invoked directly from a CICS session.  The first word of the
  497. command string is taken to be the name of the command.  Kermit first
  498. checks whether the name is in a list of simulated CICS functions (and
  499. their abbreviations).  If so, Kermit itself simulates the function.  The
  500. @Index(TYPE)@Index(DIRECTORY)
  501. available functions are DIRECTORY, TYPE, COPY, and
  502. DELETE.  DIRECTORY and TYPE are identical to the corresponding
  503. Kermit subcommands.
  504. COPY has a straightforward syntax (old @i<filespec> followed by new);
  505. DELETE is even simpler (just the desired @i<filespec>).  DELETE and
  506. DIRECTORY have no special options,
  507. but COPY and TYPE offer one: the source @i<filespec>
  508. may have a range of line numbers (in the same syntax as the SEND
  509. subcommand) to be copied/typed instead of the entire file.
  510. @Index(COPY)@Index(DELETE)
  511. All four functions are applicable to the same data objects
  512. as KERMIT SEND and RECEIVE, but none of the four recognize wildcards.
  513. No RENAME function is implemented,@Index(RENAME) although that
  514. command name is reserved.
  515. @Indexentry(key="Command level",
  516.  entry="Command level.  @i<See> CICS command level")
  517. If the command name is not found in the list of special functions,
  518. Kermit attempts to invoke a CICS program of that name with a COMMAREA
  519. consisting of the remainder of the command string.  The CICS
  520. commands used in @Index(CICS command level)command-level
  521. programming are not supported.  Kermit detects numeric return
  522. codes from co-operating invoked programs by examining the COMMAREA
  523. upon return.  If the first two bytes are the string @qq<R(>, the seventh
  524. byte is @qq<)>, and the third byte is the same as the fourth, the string
  525. of bytes three though six is taken to be a binary fullword return code.
  526. The conditions are sufficiently restrictive that "accidental" return
  527. codes are very rare (one chance in four billion, assuming totally
  528. random bytes, but probably less than that in practice).  A
  529. negative code is taken to mean that the host command was actually
  530. "illegal" in some sense, a zero code means that the command completed
  531. successfully, and a positive code means that the command encountered
  532. an error of some kind while executing.  Positive codes are reported to
  533. the user in the form @qq<R(number)>, where the numeric value is given
  534. in decimal.
  535.  
  536. @Heading(The CWD Subcommand)
  537. @Index(CWD)@Index(Directories)@Index(Fileclass)
  538.  
  539. Syntax:@q< CWD @i(directory) @i(or) '@i(prefix)>
  540.  
  541. The CWD (Change Working Directory)
  542. subcommand establishes a new default directory
  543. or specifies a
  544. default prefix for Qualified File Names.  The specified name is
  545. normally the four-character userid associated with a directory in
  546. Kermit-managed storage.  However, if
  547. the name is omitted, this resets the directory to @qq<*>, which is a
  548. synonym for
  549. the session userid.  If the name begins with an apostrophe, that
  550. establishes the use of Qualified File Names with the given string
  551. as prefix.  When a QFN prefix is established, any @i(filespec) given
  552. to Kermit-CICS without an explicit fileclass (directory) will be
  553. appended to the current prefix and interpreted as a QFN, rather than
  554. as a normal CICS data object name.
  555. @Index(Qualified File Names)
  556. When a fileclass is given explicitly, even if the fileclass is
  557. ignored (as in the case of TD and TS queues), that
  558. overrides the presumption of a QFN.  Thus, while the CWD subcommand
  559. allows the convenience of an abbreviated notation for both QFN's and
  560. normal data object names, the underlying syntax always permits the
  561. specification of any desired file by spelling out the @i(filespec) in
  562. full.  For example, if the current prefix is @qq<'AAA1234.>, the QFN
  563. @qq<'AAA1234.OLD.TAKE'> may be abbreviated as just @qq<OLD.TAKE>, but
  564. the system initialization file can still be specified (as
  565. @qq<*/KSYS.TD>).  Similarly, if the prefix is @qq<*>, @i(i.e.), the
  566. session default directory name, the same QFN must be spelled out in
  567. full, while the filespec @qq<OLD.TAKE> would refer to member @qq<OLD>
  568. in the user's directory.
  569.  
  570. @Heading(The DIRECTORY Subcommand)
  571. @Index(DIRECTORY)
  572.  
  573. Syntax:@q< DIRECTORY @i(filespec)>
  574.  
  575. The DIRECTORY subcommand displays attributes of one or more files
  576. (name, LRECL, RECFM, size, type, and date).
  577. The @i(filespec) may have wildcard characters if it refers to members
  578. of the current working directory or to TS or TD queues.
  579. For TD queues, the type is displayed as @qq<EXTRA>, @qq<INTRA>,
  580. @qq<REMOTE>, or @qq<INDIRECT>, and the type for all other data
  581. objects is @qq<OTHER>.  The size is displayed, where possible, in
  582. two forms, both the number of records and the total number of
  583. bytes (rounded to the nearest kilobyte).  If either of those
  584. sizes is shown as zero, it may simply mean that Kermit was unable
  585. to obtain the required information, @i(e.g.), for main-storage TS
  586. queues in CICS under MVS/ESA.  A value of zero for the LRECL means
  587. that the only limit is 32767.  Similarly, if the date is unavailable
  588. (often the case), it will simply be omitted.
  589.  
  590. @Heading(The GIVE Subcommand)
  591. @Index(GIVE)@Index(Translation tables)
  592.  
  593. Syntax:@q< GIVE @i(table-name) @i(filespec)>
  594.  
  595. This subcommand compares the named translation
  596. table with its default values and saves the differences
  597. in a TAKE file named @i(filespec).  The @i(filespec)
  598. has the usual format, except that the default
  599. filetype is @qq<TAKE>, rather than @qq<TS>.  See the Kermit-370 chapter
  600. for a fuller description of this subcommand.
  601.  
  602. @Heading(The HELP Subcommand)
  603. @Index(HELP)
  604.  
  605. Syntax:@q< HELP [@i(subcommand)]>
  606.  
  607. This subcommand
  608. displays a message that explains the specified Kermit-CICS subcommand.
  609. If no subcommand is given, the message explains the Kermit command
  610. itself.  These messages are stored in the Kermit-managed storage in
  611. the common directory.
  612.  
  613. @Heading<The RECEIVE Subcommand>
  614.  
  615. @Index(RECEIVE)
  616. Syntax:@q< RECEIVE [@i(filespec)]>
  617.  
  618. The RECEIVE subcommand tells Kermit to receive one or more files
  619. from the other system.  You must issue the corresponding
  620. SEND subcommand to the
  621. other Kermit.
  622.  
  623. If the optional @i(filespec) is omitted, Kermit-CICS will use the
  624. name(s) provided by the other Kermit.  If that name is not a legal
  625. CICS file name, Kermit-CICS will delete excess characters,
  626. if any.  If the filetype is illegal, however,
  627. Kermit will reject the file.  Wildcards may not be used.
  628. A @i(filespec) in the subcommand indicates what name the incoming file
  629. should be given.
  630. If the optional @i(filespec) is provided,
  631. but more than one file arrives, the
  632. first file will be stored under
  633. the given @i(filespec), and the remainder will be stored under
  634. their own names, as provided by the other Kermit.
  635.  
  636. For purposes of truncation and folding, the maximum record length for
  637. a received file depends on the file type and the filetype.  BINARY
  638. files are folded at the current LRECL, but TEXT files may have a
  639. maximum size of 32767 (TS queues and Kermit directory members do,
  640. as do TD queues with varying-length records).
  641. @Index(Truncation)@Index(Folding)
  642.  
  643. @Index(Filename collision)
  644. If the incoming file has the same name as an existing file, the action
  645. taken depends on the FILE COLLISION setting.  The possible settings
  646. and their meanings are given in the Kermit-370 chapter.  Two of the
  647. settings (BACKUP and RENAME) require that
  648. Kermit-CICS change the incoming name
  649. so as not to obliterate a pre-@|existing file.  It attempts to find
  650. a unique name by successively modifying the original and checking for
  651. the existence of such a file at each step.  The procedure begins by
  652. truncating the filename to six characters if necessary and then
  653. appending @qq<$0> and changing any filetype other than @qq<TAKE>
  654. to @qq<TS>.  If a file by that name exists,
  655. Kermit then replaces the @qq<0> with a @qq<1>.
  656. It continues in this manner up to @qq<9>, and if an unused name cannot
  657. be found, the transfer fails.  In Kermit-CICS, the default setting of
  658. FILE COLLISION is RENAME, which causes the new file to be stored under
  659. the modified name.  The BACKUP option is not supported by Kermit-CICS.
  660.  
  661. @Heading<The SEND Subcommand>
  662. @Index(SEND)
  663.  
  664. Syntax:@q{ SEND [@i(filespec)[<@i(options)>] [@i(foreign-filespec)]][, ...]}
  665.  
  666. The SEND subcommand causes one or more files to be sent from CICS
  667. to the other system.
  668. For details on the @i(options), see the description of
  669. SEND in the Kermit-370 chapter.  Note that no blanks may intervene
  670. between the CICS @i(filespec) and the @i(options).
  671.  
  672. @Index(Wildcards)
  673. If the filetype is @qq<TD>, @qq<TS>, or @qq<TAKE>,
  674. the filename may contain the wildcard characters @qq<*> or
  675. @qq<%>.  Wildcards are valid with @qq<TAKE> only for the current
  676. directory.  If wildcards are used, all eligible matching files will
  677. be sent.  Note that wildcard specification for TS queues cannot be
  678. guaranteed to work correctly, since CICS is a multi-user environment,
  679. and the system chain of queues can be modified dynamically while
  680. Kermit is following the chain looking for matches.  The result might
  681. be to skip one or more files, to send a file more than once, or to
  682. attempt sending a non-existant queue (cutting short the transfer with
  683. an I/O error message).
  684.  
  685. The @i(foreign-filespec), if any, is used for the file header of the
  686. outgoing file, replacing the usual @qq<name.type> copied from the
  687. CICS @i(filespec).
  688. Normally, this form of the SEND subcommand is used only
  689. when the @i(filespec) has no wildcards, since
  690. the @i(foreign-filespec) is used only for the first file of a
  691. group (subsequent files having default headers).
  692. If both @i(filespecs) are omitted for this subcommand, Kermit will
  693. prompt separately for each.
  694. This prompting mode is especially useful when more than one file
  695. (or file group) is to be sent, since the command line is limited
  696. to 130 characters.
  697.  
  698. @Indexsecondary(primary="Blanks",secondary="preserving trailing")
  699. Trailing blanks in a text file with RECFM F are deemed superfluous and
  700. are stripped off when Kermit-CICS downloads the file.  In order to treat
  701. such blanks as significant, you must convert the record format to V by
  702. using, for example, the Kermit HOST COPY subcommand to move the file
  703. to a TS queue.
  704.  
  705. @Heading<The SET Subcommand>
  706. @Index(SET)
  707.  
  708. Syntax:@q< SET @i(parameter) [@i(value)]>
  709.  
  710. The SET subcommand establishes or modifies various parameters controlling
  711. file transfers.
  712. The following SET parameters are available in Kermit-CICS, but not
  713. universally in Kermit-370:
  714. @Begin(Format,spread 0)
  715. @tabclear()@tabset(2.0inches)
  716. DELIMITER@\character for terminal input.
  717. FILE
  718.   LRECL@\Logical Record length for incoming file.
  719.   RECFM@\Record format for incoming files.
  720. PREFIX@\New directory.
  721. @End(format)
  722.  
  723. @Subheading<SET DELIMITER>
  724. @Index(Delimiter)
  725.  
  726. Syntax:@q< SET DELIMITER @i(character)>
  727.  
  728. This subcommand is
  729. defines a character to be interpreted as the logical end of an input
  730. command line (for the purpose of entering multiple commands on a
  731. single line).  This is used only for commands entered at the terminal
  732. and has no effect on commands contained in TAKE files.  The delimiter
  733. is initially undefined, but it can be set in one of the initialization
  734. files and thereby be used in parsing the initial command-line
  735. arguments.
  736.  
  737. @Subheading(SET FILE COLLISION)
  738.  
  739. Syntax:@q< SET FILE COLLISION @i(option)>
  740.  
  741. Unlike most other variants of Kermit-370, Kermit-CICS has RENAME as the
  742. default value for FILE COLLISION.  As a consequence, the usual mode of
  743. operation for receiving a file that already exists (or appears to
  744. exist, as extra-partition TD queues always do), is to assign a new and
  745. unique name and save the file as a TS queue.  If you really want to
  746. upload into an extra-partition TD queue, you must first SET FILE
  747. COLLISION OVERWRITE or APPEND, whichever is appropriate.  Actually, if
  748. the queue in question already exists but
  749. is closed, these two options have the
  750. same effect, which is to overwrite the queue.
  751. @Index(Filename collision)@Index(TD queues)
  752.  
  753. @Subheading(SET FILE LRECL)
  754.  
  755. Syntax:@q< SET FILE LRECL @i(number)>
  756.  
  757. This sets the logical record length for incoming files to a @i(number)
  758. from 1 to 32767 (32K-1).  This variable is used only for fixed-format
  759. and binary files.  However, the only
  760. currently supported type of fixed-format files is the extra-partition TD
  761. queue, which does not allow Kermit to alter the pre-defined LRECL.
  762. The default is 80.
  763.  
  764. @Subheading(SET FILE RECFM)
  765. @Index(RECFM)
  766.  
  767. Syntax:@q< SET FILE RECFM @i(option)>
  768.  
  769. This
  770. sets the record format to use for incoming files.  Valid @i<option>s are
  771. "Undefined", "Fixed", and "Variable" (the default).
  772. Fixed-format records are padded, folded,
  773. or truncated, as needed, to the current LRECL.  Most kinds of files,
  774. in fact, cannot be anything but variable.  There is no current use for
  775. this subcommand, since the only files that can have fixed-length
  776. records are not affected by the Kermit setting.  However, there may
  777. be future applications for as-yet-unsupported filetypes.
  778.  
  779. @Subheading<SET PREFIX>
  780.  
  781. Syntax:@q< SET PREFIX @i(string)>
  782.  
  783. This subcommand is equivalent to the CWD subcommand (@i<q.v.>).  Issuing
  784. @qq<SHOW PREFIX> will not reveal the name of the default directory,
  785. since that is called by its alias @qq<*>.  You must use the SPACE
  786. subcommand instead (@i<q.v.>).  There is no mechanism for displaying
  787. the list of all existing directories.
  788. @Index(Directories)
  789.  
  790. @Heading(The SPACE Subcommand)
  791. @Index(SPACE)
  792.  
  793. Syntax:@q< SPACE>
  794.  
  795. This subcommand displays the storage
  796. allocation in the current directory and the allowed quota.  If there
  797. is no current directory, @i(i.e.), if a QFN
  798. @Index(Qualified file names)
  799. prefix has been selected, the response is @qq<No directory defined>.
  800.  
  801. @Heading<The TAKE Subcommand>
  802. @Index(TAKE)
  803.  
  804. Syntax:@q< TAKE @i(filespec)>
  805.  
  806. Execute Kermit subcommands from the specified file.  The @i(filespec)
  807. has the usual format, except that the default
  808. filetype is @qq<TAKE>, rather than @qq<TS>.
  809.  
  810. @Section<How to build an executable Kermit-CICS>
  811.  
  812. Before attempting to build Kermit-CICS, look in the
  813. Kermit distribution under IKXKER for the
  814. installation document, as well as "beware", help, and update files, and
  815. read them first.  They will probably contain information that is more
  816. current than what you see here.  Indeed, the process of applying the
  817. updates is complicated enough that it cannot be adequately described
  818. here.  The installation document @q(IKXKER.INS)
  819. contains a full description of the process, including
  820. @Index(Batch jobs)
  821. batch jobs for carrying out the various steps.
  822. You will need to extract the JCL and submit it (suitably
  823. tailored to your local environment).  These jobs apply the updates, pass
  824. the source through the command-level translator and the assembler, and
  825. finally link the program into an executable phase or load module.
  826. @Index(CICS command level)
  827.  
  828. @Index(Initialization files)@Index(Translation tables)
  829. If your site's ASCII/EBCDIC translation table
  830. for TTY lines does not conform
  831. to the one listed in the appendix (which in turn conforms to the
  832. one given in the IBM System/370 Reference Summary), then enter
  833. the appropriate SET ATOE/ETOA/TATOE/TETOA
  834. subcommands in @q(KSYS.TD).  The generic Kermit-370 chapter includes
  835. an invertible 256-entry translation table and describes a procedure
  836. for determining what SET subcommands are needed.
  837. @i<NOTE:> If your site's ASCII/EBCDIC translation is not invertible for
  838. at least 96 entries, Kermit will not and cannot work.
  839.  
  840. @Section(What's Missing)
  841.  
  842. Release @value(-cicsversion) of Kermit-CICS is a test release, the first
  843. version of Kermit-370 for CICS.  As such, it has all the basics, but
  844. several features either have not been fully tested or have
  845. not yet been implemented.
  846. Work on Kermit-CICS will continue.  Features that need to be
  847. improved or added include:
  848. @begin(itemize)
  849. IKXDYNAL for both CICS/VSE and CICS/MVS.  The former
  850. would probably support only
  851. spool files, but the latter should support both spool
  852. files and MVS data sets (QFN's).
  853.  
  854. Sample exit routines for supporting userid algorithms besides
  855. the OPID and TERM options.
  856.  
  857. Sample package of security exit routines.
  858.  
  859. Support for data objects on a remote CICS.
  860.  
  861. Cleaner performance of server-mode BYE function, dependent on local
  862. conventions.
  863.  
  864. Support for indirect TD queues.
  865.  
  866. Testing linemode operation.
  867.  
  868. Mechanism for flushing terminal output from Kermit (such as for the
  869. TYPE subcommand).
  870.  
  871. Mechanism for collecting "terminal" output from invoked programs.
  872.  
  873. Testing under CICS/VM.
  874.  
  875. SET REPEAT subcommand.
  876.  
  877. Automatic conversion of EBCDIC printer carriage control into ASCII
  878. control characters.
  879.  
  880. CONNECT subcommand.  This may be impossible.
  881. @end(itemize)
  882.  
  883. Anyone interested in working on these or other improvements should first
  884. get in touch with the Center for Computing Activities at Columbia
  885. University to find out if someone else has already begun a similar
  886. project (and, if so, who).
  887.